扩展Clang 您所在的位置:网站首页 cmake 添加库目录 扩展Clang

扩展Clang

2023-03-13 00:16| 来源: 网络整理| 查看: 265

许多c++项目都有一套关于使用什么函数的编码标准,CMake也不例外。Clang-tidy是一个对c++项目实施一些普遍相关标准的程序。CMake在其代码上运行clang-tidy,作为其CI过程的一部分,但是clang-tidy本身并不能强制执行特定于CMake代码库的标准。

幸运的是,clang-tidy支持多个版本的可加载插件,LLVM和clang有非常全面的内部api文档。在某些情况下,Clang-tidy还可以自动将其建议的修复程序应用到源文件。这意味着熟悉clang-tidy内部结构的开发人员可以编写一个插件,在自己的项目上执行自己的代码标准,并完成自动更正。

通过与奥尔巴尼大学计算机科学系的合作,Kitware已经监督了clang-tidy插件的开发,该插件将用于执行CMake的代码标准。这将允许CMake维护者更容易地审查代码,也为正在完成他们的顶峰项目的计算机科学系毕业生提供了一个学习机会。

我们新的clang-tidy插件加强了六个特定于cmake的编码准则:

调用strlen ()或sizeof ()在字符串中,字面值应该替换为对的调用cmStrLen (). 的实例std:: ifstream,std:: ofstream,std:: fstream应该用cmsys: ifstream,cmsys: ofstream,cmsys: fstream分别。 函数具有保龄球参数应将其替换为枚举类参数。 包含保护的头文件(#如果未定义/#定义/# endif)应使用# pragma一旦代替。 std:: ostringstream不应使用。相反,字符串应该使用cmStrCat (). 字符串不应该连接在一起+或+ =.相反,它们应该被连接使用cmStrCat ().

我们开发的插件已经活跃在CMake的CI系统中,积极执行检查1、2和4(检查3、5和6目前由于大量未解决的违规而被禁用)。插件的代码可以在这里找到在这里.CI系统根据clang-tidy头文件构建插件,然后使用——负载争论指向了新建的建筑所以插件文件。

另外,我们还增加了一个新功能到CMake,以允许clang-tidy将所有建议的修复程序导出到一个目录,然后在构建完成后将该目录应用于源代码。这将允许大规模重构以启用新的检查,并且CI系统还可以使用它自动生成包含其建议修复的补丁文件。

该项目已被证明是CI系统中c++代码审查的有用工具。除了提高CMake代码库的质量之外,我们希望从这个项目中获得的知识将允许我们为那些希望在自己的代码上执行自己的标准的客户开发干净的插件。

作为一个插件可以做什么的例子,考虑下面的代码片段:

void writeFile() {std::ofstream fout("file.txt");fout

CMake的代码标准规定了这一点cmsys: ofstream, CMake的内部ofstream在Windows上处理文件名国际化的实现,被用来代替std:: ofstream.clang-tidy插件可以检测到错误的用法std:: ofstream,向用户发出警告,并自动更正:

void writeFile() {cmsys::ofstream fout("file.txt");fout

未来的工作将包括在CMake的clang-tidy插件中添加更多的检查,将# pragma一旦检查回LLVM项目,并添加一个新功能clang-tidy添加一个NOLINT在无法应用自动修复程序的情况下,将行移到源代码。这个新功能将允许有大量未解决的违规行为的检查被打开而不会失败,给现有的违规行为一个宽限期来修复,同时防止任何新的违规行为被添加到代码库中。

识别

Kitware想要认可Joseph Blaauboer, Mikhail Glebov和Sean Orner在这个项目上的辛勤工作,并祝贺他们从奥尔巴尼大学(UAlbany)毕业。我们也要感谢普拉迪普·阿特雷博士,奥尔巴尼大学教授,负责监督这个计算机科学顶点项目。

“我们要感谢Kitware赞助这个项目,并允许我们为CMake代码库做出有意义的贡献。

我们还要特别感谢凯尔·爱德华兹;您对计算机科学领域的专业知识和奉献精神确实令人鼓舞,能够得到您杰出的指导是我的荣幸。我们将永远感激在您的指导下,我们在整个项目中发展起来的基本知识和技能。

再次感谢你们的支持。”

-来自奥尔巴尼大学毕业班毕业生的信息 分享: 点击在Twitter上分享(在新窗口打开) 点击在Facebook上分享(在新窗口打开) 点击在LinkedIn上分享(在新窗口打开) 标签: CMake 软件过程 留下回复取消回复


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有